package com.saodisheng.service;

import com.saodisheng.model.Remind;

/**
 * description:
 * remind 提醒我业务，提醒用户去看消息
 *
 * remind 表结构
 * accountId   int(11)    主键，对应到用户账号 id
 * referMe      int(11)    at 我的消息条数
 * message     int(11)    私信消息条数，暂时不用
 *
 * @author 扫地生_saodisheng
 * @date 2022/1/29
 */
public interface RemindService {
	/**
	 * 生成 @提到我 refer_me 的 remind 提醒
	 * @param accountId 提醒到的账户 id
	 */
	void createRemindOfReferMe(int accountId);

    /**
     * 生成 私信 message 的 remind 提醒
     * @param accountId 提醒到的账户 id
     */
    void createRemindOfMessage(int accountId);

    /**
     * 生成 粉丝增加时 friend 的 remind 提醒
     * @param accountId 提醒到的账户 id
     */
    void createRemindOfNewFans(int accountId);

	/**
	 * 用户查看 @提到我 之后，重置 remind 中的 referMe 字段
	 * @param accountId 提醒到的账户 id
	 */
	void resetRemindOfReferMe(int accountId);


	/**
	 * 用户查看 私信 之后，重置 remind 中的 message 字段
	 * @param accountId 收到私信的账户 id
	 */
	void resetRemindOfMessage(int accountId);

    /**
     * 用户查看 粉丝 之后，重置 remind 中的 fans 字段
     * @param accountId 增加粉丝的用户账户 id
     */
    void resetRemindOfNewFans(int accountId);

	/**
	 * 为了避免每次都读库，引入缓存
	 */
	Remind getRemind(int accountId);

	/**
	 * 当用户的 remind 表发生变化时，必须清一下此 cache，否则数据不对
	 */
	void clearCache(int accountId);
}
